package palindrome_number

import "strconv"






/*
判断回文数：
两种方法：
1：将数字转化为字符串，进行判断
2：将字符串转化为数组，进行判断
 */
//首先特判：
//数字为负，不是回文数
//数字小于10，是回文数
func isPalindrome1(x int) bool {
	if x < 0 {
		return false
	}
	if x < 10 {
		return true
	}
	//将数字转化为字符串
	snum := strconv.Itoa(x)
	low , high := 0 , len(snum) - 1
	//两个指针，指向开头和结尾
	for low < high {
		//如果不相同，直接返回false
		if snum[low] != snum[high] {
			return false
		}
		low ++
		high --
	}
	return true
}


func isPalindrome2(x int) bool {
	if x < 0 {
		return false
	}
	if x < 10 {
		return true
	}
	//声明一个切片
	var des = make([]int , 0)
	//将x不断进行取余，装入切片
	for x != 0 {
		des = append(des , x % 10)
		x /= 10
	}
	low , high := 0 , len(des) - 1
	//双指针
	for low < high {
		//判断两个指针指向的数是否相同，如果不相同，直接返回false
		if des[low] != des[high] {
			return false
		}
		low ++
		high --
	}
	return true
}